package me.zk.maxlength;

import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;
import com.rabbitmq.client.MessageProperties;

import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.TimeoutException;

/**
 * Hello world!
 *
 */
public class RabbitMqMaxLengnthProducerDemo {
    public static void main( String[] args ) throws IOException, TimeoutException {
        // 创建连接工厂
        ConnectionFactory factory = new ConnectionFactory();
        factory.setHost("localhost");

        // 获取connection
        Connection connection = factory.newConnection();
        // 获取channel
        Channel channel = connection.createChannel();
        // 设置队列属性
        // 队列名称，
        // 是否持久化，队列持久化
        // 是否排他性，消费者和生产者是否在一个连接
        // 是否自动删除，如果无消费者连接消息自动删除
        // 额外参数，
        Map<String, Object> map = new HashMap<String, Object>();
        map.put("x-max-length", 10);
        map.put("max-length-bytes", 1024);
        //使用对默认交换机
        //默认交换隐含地绑定到每个队列，路由关键字等于队列名称。无法显式绑定到默认交换机或从默认交换机解除绑定。它也不能被删除。
        channel.queueDeclare("max-length",false,false,false,map);

        // 交换机名称，路由key，消息属性，消息
        for (int i = 0; i < 200; i++) {
            String s = "maxlenght" + i;
            channel.basicPublish("","max-length", MessageProperties.PERSISTENT_BASIC,s.getBytes());

        }

        channel.close();
        connection.close();

    }
}
